import config
from .views import bp
from flask import session,g
from .models import BACKUser,BACKPermission


# 这个钩子函数的代码会在执行蓝图views下的视图函数之前执行
# 用户名渲染功能实现，使用钩子函数，在请求之前，
# 查看session里是否有用户，有则已经登陆，将用户id取出来
# 钩子函数的运用
@bp.before_request     #不可以写成@bp.before_request()，()不能要，原因是
def before_request():
    if config.BACK_USER_ID in session:
        user_id = session.get(config.BACK_USER_ID)
        # 然后再数据库中把用户信息查到
        user = BACKUser.query.get(user_id)
        # 如果数据库中用户存在，什么情况下会不存在
        if user:
            # 若存在，则绑到g,back_user此处的含义？
            g.back_user =user


# 如何获取后台管理权限的相关信息，即保证html文件可以使用models里
# 中对应的相关信息，此时需要使用钩子函数，让视图函数反转前执行钩
# 子函数，注意装饰器s上下文处理器，将信息传给后台,钩子函数可以方便所有模板使用
@bp.context_processor
def back_context_processor():
    # 将一下变量返回给上下文处理器
    return {'BACKPermission':BACKPermission}

